package com.masterlu.leetcode.daily.stack.simple;

import java.util.Stack;

/**
 * 比较含退格的字符串
 * https://leetcode-cn.com/problems/backspace-string-compare/
 */
public class S844BackspaceCompare {

    public static void main(String[] args) {
        String s = "y#fo##f";
        String t = "y#f#o##f";
        backspaceCompare(s,t);
    }
    /**
     *
     * @param s 目标字符串1
     * @param t 目标字符串2
     * @return 两个字符串是否相同
     */
    public static boolean backspaceCompare(String s, String t) {

        /**
         * 1.利用栈思想，
         * 创建两个栈对象，分别整理两个目标字符串
         * 具体整理：
         * 如果为退格#符号。则正常入栈，如果是退格符号，则进行出栈
         * 最后将栈字符串，输出为字符串，进行比较。
         */

        /**
         * "y#fo##f"
         * "y#f#o##f"
         */
        if ((s == null && t == null) || (s == "" && t == "")){
            return Boolean.TRUE;
        }

        Stack<Character> stack1 = new Stack<>();
        Stack<Character> stack2 = new Stack<>();
        for (char c : s.toCharArray()) {
            if ('#' == c && !stack1.isEmpty()){
                stack1.pop();
            }else if ('#' != c){
                stack1.push(c);
            }
        }
        for (char c : t.toCharArray()) {
            if ('#' == c && !stack2.isEmpty()){
                stack2.pop();
            }else if ('#' != c){
                stack2.push(c);
            }
        }

        return stack1.toString().equals(stack2.toString());
    }
}
